package study.member.sungil.oop1;

/**
 * @author : hiyogils
 * @date : 2014. 11. 25.
 * @description : 클래스변수와 인스턴스 변수
 * 클래스변수와 인스턴스변수의 차이를 이해하기 위한 예로 카드 게임에 사용되는 카드를 클래스로 정의해보자.
 * 카드 클래스를 작성하기 위해서는 먼저 카드를 분석해서 속성과 기능을 알아 내야한다.
 * 속성으로는 카드의 무늬,숫자,폭,높이 정도를 생각할 수 있을 것이다.
 * 
 * 이 중에서 어떤 속성을 클래스 변수로 선언할 것이며 , 또 어떤 속성들을 인스턴스 변수로 선언할 것인지 한번 생각해보자.
 */
public class Card {
	
	String kind;
	int number;
	
	static int width = 100;
	static int height = 250;
	/*
	각 Card 인스턴스는 자신만의 무늬 kind와 숫자number를 유지하고 있어야 하므로 이들을 인스턴스변수로 선언하였고 , 각 카드의 
	폭과 높이는 모든 인스턴스가공통적으로 같은 값을 유지해야하므로 클래스변수로 선언하였다.
	카드의 폭을 변경해야할 필요가 있을 경우 모든 카드의 width값을 변경하지 않고 한 카드의 width값만 변경해도 모든 카드의 width값이 변경되는 셈이다.
	 */
	@Override
	public String toString() {
		return "객체 카드는" + this.kind + "," + this.number + "이며, 크기는 (" + this.width + ", " + this.height + ")"  ;
	}
	
}
